Elasticsearch(033):es中Document(文档)之删除文档

一、概述

上一小节中,我们学习了文档的定义和新增语法。当然,有新增操作,相反的就会有删除操作。es中的文档的删除操作分为两类: 主键删除查询删除

二、删除文档(主键删除)

示例: 下面操作的含义 删除id为1的文档记录

DELETE example/docs/1

返回结果

{
  "_index": "example",
  "_type": "docs",
  "_id": "1",
  "_version": 2,
  "result": "deleted",
  "_shards": {
    "total": 2,
    "successful": 2,
    "failed": 0
  },
  "_seq_no": 1,
  "_primary_term": 1
}
  • result 得知删除成功

三、删除文档(查询删除)

_delete_by_query语法: 即对查询匹配到的每一个文档执行删除操作。

3.1 数据准备

示例如下

#建立索引和映射
PUT example

PUT example/docs/_mapping
{
  "properties": {
    "id":{
      "type": "long"
    },
    "name":{
      "type": "text"
    },
    "birthday": {
      "type": "date"
    }
  }
}

#添加几个测试数据,以供后面查询删除操作
PUT example/docs/1
{
  "id":1,
  "name":"张三",
  "birthday": "2019-10-10"
}

PUT example/docs/2
{
  "id":2,
  "name":"张四",
  "birthday": "2017-08-08"
}

PUT example/docs/3
{
  "id":3,
  "name":"李思思",
  "birthday": "2017-08-08"
}

GET example/docs/_search
{
  "query": {
    "match_all": {}
  }
}

3.2 查询删除匹配的文档

示例如下

#删除名字中包含张的文档
POST example/docs/_delete_by_query
{
  "query":{
    "match":{
      "name": "张"
    }
  }
}

返回结果

{
  "took": 24,
  "timed_out": false,
  "total": 2,
  "deleted": 2,
  "batches": 1,
  "version_conflicts": 0,
  "noops": 0,
  "retries": {
    "bulk": 0,
    "search": 0
  },
  "throttled_millis": 0,
  "requests_per_second": -1,
  "throttled_until_millis": 0,
  "failures": []
}

小贴士

_delete_by_query在启动索引时获取索引的快照,并删除使用internal版本控制发现的索引。这意味着,如果在采集到快照版本和处理删除请求之间更改文档,则会遇到版本冲突。当版本匹配时,将删除文档。

scroll_size默认情况下的scroll_size的大小是1000。不过可以通过该参数进行调整。示例如下。

POST example/docs/_delete_by_query?scroll_size=999999

四、删除所有文档

删除所有文档是上一小节查询删除的一种特殊的变体。当查询的条件是匹配所有记录,则执行的删除当前索引下的所有记录数据。该操作会根据数据量的多少,有一定的时间延迟

示例如下

POST example/docs/_delete_by_query
{
  "query": {
    "match_all": {}
  }
}
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值